package edu.mercer.sse.errors;

import edu.mercer.sse.annotations.Fulfills;

/**
 * 
 * Runtime Unchecked Exception.<p>
 *
 */

public class CriticalException extends RuntimeException 

	implements VisitableErrorLogging<String, ErrorLoggingVisitor>

{
	private static final long serialVersionUID = 5775543603149913825L;

    /**
     * Create new custom unchecked exception: CriticalException.<p>
     */
            
    public CriticalException()
    {
            super();
            
    }//constructor


    /**
     * Create new custom unchecked exception: CriticalException.<p>
     * 
     * @param messageIn - String descriptive message to include when creating
     *      this unchecked exception
     */
    
    public CriticalException( final String messageIn )
    {
            super( messageIn );
            
    }//constructor
    

    /**
     * Create new custom unchecked exception: CriticalException.<p>
     * 
     * @param exceptionIn - Exception, checked to be wrapped in this 
     *      unchecked exception
     */
    
    public CriticalException( final Exception exceptionIn )
    {
            super( exceptionIn );
            
    }//constructor
    

    /**
     * Create new custom unchecked exception: CriticalException.<p>
     * 
     * @param throwableIn - Throwable to be wrapped in this unchecked 
     *      exception
     */
    
    public CriticalException( final Throwable throwableIn )
    {
            super( throwableIn );
            
    }//constructor	

    
	@Fulfills("VisitableErrorLogging")
	@Override
	public String accept( final ErrorLoggingVisitor visitor ) 
	{
		return visitor.visit( this );
	
	}//method    

	
}//class
